security_check(); if ($resultat_session == 'c') { header("Location: ../utilisateurs/mon_compte.php?change_mdp=yes"); die(); } else if ($resultat_session == '0') { header("Location: ../logout.php?auto=1"); die();}; // INSERT INTO droits VALUES ('/mod_annees_anterieures/archivage_bull_pdf.php', 'V', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'Génération archives bulletins PDF', ''); if (!checkAccess()) { header("Location: ../logout.php?auto=1"); die(); } $id_classe=isset($_POST['id_classe']) ? $_POST['id_classe'] : (isset($_GET['id_classe']) ? $_GET['id_classe'] : NULL); $generer_fichiers_pdf_archivage=isset($_POST['generer_fichiers_pdf_archivage']) ? $_POST['generer_fichiers_pdf_archivage'] : (isset($_GET['generer_fichiers_pdf_archivage']) ? $_GET['generer_fichiers_pdf_archivage'] : NULL); $archivage_fichiers_bull_pdf_auto=isset($_POST['archivage_fichiers_bull_pdf_auto']) ? $_POST['archivage_fichiers_bull_pdf_auto'] : (isset($_GET['archivage_fichiers_bull_pdf_auto']) ? $_GET['archivage_fichiers_bull_pdf_auto'] : "n"); $mode_bulletin=isset($_POST['mode_bulletin']) ? $_POST['mode_bulletin'] : (isset($_GET['mode_bulletin']) ? $_GET['mode_bulletin'] : "pdf"); if(($mode_bulletin!="pdf")&&($mode_bulletin!="pdf_2016")) { $mode_bulletin="pdf"; } // Si le module n'est pas activé... if($gepiSettings['active_annees_anterieures'] !="y"){ header("Location: ../logout.php?auto=1"); die(); } $msg=""; if (isset($_GET['suppr_temp']) and ($_GET['suppr_temp']=="y")) { check_token(); $dossier_archivage_pdf=$_GET['dossier_archivage_pdf']; $dossier_archivage_pdf_nettoye=preg_replace("/[^A-Za-z0-9_]/","",$dossier_archivage_pdf); if(($dossier_archivage_pdf=='')||($dossier_archivage_pdf!=$dossier_archivage_pdf_nettoye)) { $msg.="Le dossier à supprimer '$dossier_archivage_pdf' n'est pas convenable: $dossier_archivage_pdf_nettoye"; } else { $suppr=deltree("../temp/".get_user_temp_directory()."/".$dossier_archivage_pdf); if ($suppr) { $msg .= "Succès de la suppression."; } else { $msg .= "Échec de la suppression.
"; //$msg .= "Un nettoyage des dossiers temporaires est recommandée."; $msg .= "Un Nettoyage des dossiers temporaires est recommandée."; } } if(isset($_SESSION['chgt_annee'])) { $dest="../gestion/changement_d_annee.php"; } else { $dest="./index.php"; } header("Location: $dest?msg=$msg"); die(); } if(isset($_GET['chgt_annee'])) {$_SESSION['chgt_annee']="y";} //$themessage = 'Etes-vous sûr de vouloir supprimer toutes les données concerant cette année ?'; //**************** EN-TETE ***************** $titre_page = "Générer les bulletins PDF par élève"; require_once("../lib/header.inc.php"); //**************** FIN EN-TETE ***************** if(!isset($generer_fichiers_pdf_archivage)){ echo "

Retour Retour | \n"; echo "

\n"; echo "

Pour chaque élève, un fichier PDF des N périodes de l'année va être généré dans un dossier temporaire.

\n"; //echo "

Générer les PDF par élève

\n"; echo "
\n"; echo add_token_field(); echo "

Nommage des fichiers :
Inclure dans le nom de fichier pour chaque élève :

\n"; echo "
\n"; echo "
\n"; echo "
\n"; echo "
\n"; echo "
\n"; //====================================== echo "

Autres paramètres :

"; echo "

Modèle de bulletins :
"; echo "
"; echo ""; //echo "
\n"; echo "

\n"; echo "

"; echo "
(on limite l'envoi au responsable légal 1, parce que l'adresse apparaissant sur le bulletin PDF généré est celle du responsable légal 1)
(notez également que l'envoi de mail peut ralentir l'opération d'archivage; il se peut aussi que votre fournisseur d'accès fasse des histoires avec l'envoi de nombreux mails (cela risque d'être injustement pris pour du spam))"; //echo "
\n"; echo "

\n"; echo "

"; echo "
(et ceci, bien que l'adresse responsable appraissant sur les bulletins sera celle du responsable légal 1)

"; if(getSettingAOui('active_fichiers_signature')) { echo "

"; echo "

"; } //====================================== echo "

Parcourir les élèves par tranches de :
\n"; echo "\n"; echo "

\n"; echo "
\n"; echo "
\n"; echo "

NOTES :

\n"; } else { function zip_bull_pdf($dossier_a_traiter) { $path = path_niveau(); $dirname = "backup/".getSettingValue("backup_directory")."/"; if (!defined('PCLZIP_TEMPORARY_DIR') || constant('PCLZIP_TEMPORARY_DIR')!=$path.$dirname) { @define( 'PCLZIP_TEMPORARY_DIR', $path.$dirname ); } require_once($path.'lib/pclzip.lib.php'); $dossier_a_traiter="../temp/".get_user_temp_directory()."/".$dossier_a_traiter; $nom_fichier="_bulletins_pdf_individuels_eleves_".strftime('%Y%m%d_%H%M%S').".zip"; $chemin_stockage = $path.$dirname.$nom_fichier; $dossier_dans_archive = "_bulletins_pdf_individuels_eleves_".strftime('%Y%m%d'); //le nom du dossier dans l'archive créée if ($chemin_stockage !='') { $archive = new PclZip($chemin_stockage); $v_list = $archive->create($dossier_a_traiter, PCLZIP_OPT_REMOVE_PATH,$dossier_a_traiter, PCLZIP_OPT_ADD_PATH, $dossier_dans_archive); if ($v_list == 0) { return "Erreur : ".$archive->errorInfo(TRUE); } else { return "Archive zip créée : $nom_fichier"; } } } function index_archive_pdf() { global $dossier_archivage_pdf; $entete=' '; $fich_css=fopen("../temp/".get_user_temp_directory()."/".$dossier_archivage_pdf."/style.css","w+"); fwrite($fich_css, "#contenu { text-align:center; }\n"); fclose($fich_css); $fich_index=fopen("../temp/".get_user_temp_directory()."/".$dossier_archivage_pdf."/index.html","w+"); fwrite($fich_index, $entete."Index ".getSettingValue('gepiYear')."

Index ".getSettingValue('gepiYear')."

\n"); $sql="SELECT * FROM tempo4 ORDER BY col4;"; $res_t4=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_t4)>0) { fwrite($fich_index, "

Index alphabétique des élèves

\n"); $fich_index_eleves=fopen("../temp/".get_user_temp_directory()."/".$dossier_archivage_pdf."/index_eleves.html","w+"); fwrite($fich_index_eleves, $entete."Index alphabétique des élèves".getSettingValue('gepiYear')."

Index alphabétique des élèves".getSettingValue('gepiYear')."

\n"); while($lig_t4=mysqli_fetch_object($res_t4)) { fwrite($fich_index_eleves, "".$lig_t4->col4." (".$lig_t4->col3.")
\n"); } fwrite($fich_index_eleves, "

Retour

\n"); fwrite($fich_index_eleves, "
\n"); } $sql="SELECT DISTINCT c.id, c.classe FROM classes c, tempo4 t WHERE c.id=t.col1 ORDER BY c.classe;"; $res_t_c=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_t_c)>0) { fwrite($fich_index, "

Classes :

\n"); while($lig_t_c=mysqli_fetch_object($res_t_c)) { fwrite($fich_index, "

".$lig_t_c->classe."

\n"); $sql="SELECT * FROM tempo4 WHERE col1='".$lig_t_c->id."' ORDER BY col4;"; $res_t4=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_t4)>0) { $fich_index_classe=fopen("../temp/".get_user_temp_directory()."/".$dossier_archivage_pdf."/classe_".$lig_t_c->id.".html","w+"); fwrite($fich_index_classe, $entete."Classe de ".$lig_t_c->classe." ".getSettingValue('gepiYear')."

Classe de ".$lig_t_c->classe." ".getSettingValue('gepiYear')."

\n"); while($lig_t4=mysqli_fetch_object($res_t4)) { fwrite($fich_index_classe, "".$lig_t4->col4." (".$lig_t4->col3.")
\n"); } fwrite($fich_index_classe, "

Retour

\n"); fwrite($fich_index_classe, "
\n"); } } } fwrite($fich_index, "
\n"); } echo "

Retour Retour\n"; check_token(false); //$sql="SELECT * FROM classes ORDER BY classe;"; $sql="SELECT DISTINCT c.* FROM classes c, periodes p WHERE c.id=p.id_classe ORDER BY classe;"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)==0) { echo "

Aucune classe trouvée.

"; require("../lib/footer.inc.php"); die(); } $cpt=0; $tab_classe=array(); while($lig=mysqli_fetch_object($res)) { $tab_classe[$cpt]['id_classe']=$lig->id; $tab_classe[$cpt]['classe']=$lig->classe; //echo "

\$tab_classe[$cpt]['id_classe']=".$tab_classe[$cpt]['id_classe']."
"; //echo "\$tab_classe[$cpt]['classe']=".$tab_classe[$cpt]['classe']."

"; $cpt++; } if(isset($id_classe)) { $dossier_archivage_pdf=getPref($_SESSION['login'], 'dossier_archivage_pdf', 'bulletins_pdf_individuels_eleves_'.strftime('%Y%m%d')); if(isset($_GET['ele_chgt_classe'])) { $sql="SELECT DISTINCT col1 FROM tempo2;"; $test=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test)>0) { echo "

Il reste à traiter ".mysqli_num_rows($test)." élève(s) ayant changé de classe en cours d'année.

\n"; $ele_chgt_classe="y"; } else { echo "

L'archivage est terminé.

\n"; echo "

Génération de pages d'index.

\n"; index_archive_pdf(); //echo "

Il reste à réaliser le Zip des fichiers PDF.

"; echo "

".zip_bull_pdf($dossier_archivage_pdf)."

\n"; echo "

Dossier temporaire d'archivage : $dossier_archivage_pdf

\n"; echo "

Pour des questions de place, il est recommandé de supprimer le dossier temporaire.
Commencez cependant par récupérer l'archive ZIP
(si vous n'en faites rien, vous pourrez néanmoins récupérer cette archive dans la page de Sauvegarde/Restauration de Gepi).

"; require("../lib/footer.inc.php"); die(); } } else { // Reste-t-il des élèves à parcourir dans cette classe? $sql="SELECT col2 FROM tempo2 WHERE col1='$id_classe';"; $test=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test)>0) { for($loop=0;$loop<$cpt;$loop++) { if($tab_classe[$loop]['id_classe']==$id_classe) { $classe=$tab_classe[$loop]['classe']; break; } } echo "

Il reste ".mysqli_num_rows($test)." élève(s) à parcourir dans la classe de $classe.
"; } else { // Recherche de la classe suivante: /* echo "Recherche de la classe suivante
"; echo "

";
				echo print_r($tab_classe);
				echo "
"; */ $trouve="n"; for($loop=0;$loop<$cpt;$loop++) { if((isset($tab_classe[$loop-1]['id_classe']))&&($tab_classe[$loop-1]['id_classe']==$id_classe)) { //echo "\$tab_classe[$loop-1]['id_classe']=".$tab_classe[$loop-1]['id_classe']."
"; $id_classe=$tab_classe[$loop]['id_classe']; $classe=$tab_classe[$loop]['classe']; $trouve="y"; break; } } if($trouve=='n') { // On a parcouru toutes les classes: echo "

Toutes les classes ont été parcourues.
Il ne reste que les élèves ayant changé de classe à traiter.

\n"; $sql="SELECT DISTINCT login, id_classe FROM j_eleves_classes ORDER BY login, id_classe;"; $res_ele_classe=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)>0) { //$tab_login_ele_chgt_classe=array(); //$tab_id_classe_chgt_classe=array(); // Normalement, à ce stade, la table est vide $sql="TRUNCATE tempo2;"; $menage=mysqli_query($GLOBALS["mysqli"], $sql); $ele_prec=""; while($lig=mysqli_fetch_object($res_ele_classe)) { if($lig->login==$ele_prec) { /* if(!in_array($lig->login, $tab_login_ele_chgt_classe)) { $tab_login_ele_chgt_classe[]=$lig->login; } if(!in_array($lig->id_classe, $tab_id_classe_chgt_classe)) { $tab_id_classe_chgt_classe[]=$lig->id_classe; } */ $sql="INSERT INTO tempo2 SET col1='$lig->login';"; $insert=mysqli_query($GLOBALS["mysqli"], $sql); } $ele_prec=$lig->login; } } if(!isset($tab_login_ele_chgt_classe)) { echo "

Aucun élève n'a changé de classe en cours d'année.

\n"; echo "

Génération de pages d'index.

\n"; index_archive_pdf(); echo "

Dossier temporaire d'archivage : $dossier_archivage_pdf

\n"; echo "
\n"; //echo "

Il reste à réaliser le Zip des fichiers PDF.

"; echo "

".zip_bull_pdf($dossier_archivage_pdf)."

\n"; echo "

Pour des questions de place, il est recommandé de supprimer le dossier temporaire.
Commencez cependant par récupérer l'archive ZIP
(si vous n'en faites rien, vous pourrez néanmoins récupérer cette archive dans la page de Sauvegarde/Restauration de Gepi).

"; require("../lib/footer.inc.php"); die(); } else { $ele_chgt_classe="y"; } } } } } else { // Premier passage: $arch_bull_eff_tranche=isset($_POST['arch_bull_eff_tranche']) ? $_POST['arch_bull_eff_tranche'] : 10; if((!is_numeric($arch_bull_eff_tranche))||($arch_bull_eff_tranche<1)) {$arch_bull_eff_tranche=10;} savePref($_SESSION['login'],'arch_bull_eff_tranche',$arch_bull_eff_tranche); $arch_bull_nom_prenom=isset($_POST['arch_bull_nom_prenom']) ? $_POST['arch_bull_nom_prenom'] : 'no'; $arch_bull_INE=isset($_POST['arch_bull_INE']) ? $_POST['arch_bull_INE'] : 'no'; if(($arch_bull_nom_prenom!='yes')&&($arch_bull_INE!='yes')) { $arch_bull_nom_prenom='yes'; $arch_bull_INE='yes'; } savePref($_SESSION['login'],'arch_bull_nom_prenom',$arch_bull_nom_prenom); savePref($_SESSION['login'],'arch_bull_INE',$arch_bull_INE); $arch_bull_annee_scolaire=isset($_POST['arch_bull_annee_scolaire']) ? $_POST['arch_bull_annee_scolaire'] : 'no'; savePref($_SESSION['login'],'arch_bull_annee_scolaire',$arch_bull_annee_scolaire); $arch_bull_date_edition=isset($_POST['arch_bull_date_edition']) ? $_POST['arch_bull_date_edition'] : 'no'; savePref($_SESSION['login'],'arch_bull_date_edition',$arch_bull_date_edition); $arch_bull_classe=isset($_POST['arch_bull_classe']) ? $_POST['arch_bull_classe'] : 'no'; savePref($_SESSION['login'],'arch_bull_classe',$arch_bull_classe); $mode_bulletin=isset($_POST['mode_bulletin']) ? $_POST['mode_bulletin'] : 'pdf'; savePref($_SESSION['login'],'arch_bull_mode_bulletin',$mode_bulletin); $arch_bull_envoi_mail=isset($_POST['arch_bull_envoi_mail']) ? $_POST['arch_bull_envoi_mail'] : 'no'; savePref($_SESSION['login'],'arch_bull_envoi_mail',$arch_bull_envoi_mail); $arch_bull_envoi_mail_tous_resp=isset($_POST['arch_bull_envoi_mail_tous_resp']) ? $_POST['arch_bull_envoi_mail_tous_resp'] : 'no'; savePref($_SESSION['login'],'arch_bull_envoi_mail_tous_resp',$arch_bull_envoi_mail_tous_resp); $arch_bull_signature=isset($_POST['arch_bull_signature']) ? $_POST['arch_bull_signature'] : 'no'; savePref($_SESSION['login'],'arch_bull_signature',$arch_bull_signature); $dossier_archivage_pdf=savePref($_SESSION['login'], 'dossier_archivage_pdf', 'bulletins_pdf_individuels_eleves_'.strftime('%Y%m%d')); @mkdir("../temp/".get_user_temp_directory()."/".$dossier_archivage_pdf); $sql="CREATE TABLE IF NOT EXISTS tempo4 ( col1 varchar(100) NOT NULL default '', col2 varchar(100) NOT NULL default '', col3 varchar(100) NOT NULL default '', col4 varchar(100) NOT NULL default '') ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;"; $creation_table=mysqli_query($GLOBALS["mysqli"], $sql); // On va stocker la liste des id_classe,login,fichiers $sql="TRUNCATE tempo4;"; $menage=mysqli_query($GLOBALS["mysqli"], $sql); // On va faire la liste des élèves: $sql="TRUNCATE tempo2;"; $menage=mysqli_query($GLOBALS["mysqli"], $sql); $sql="INSERT INTO tempo2 (SELECT DISTINCT id_classe, login FROM j_eleves_classes ORDER BY id_classe, login);"; $insert=mysqli_query($GLOBALS["mysqli"], $sql); // On commence avec la première classe: $id_classe=$tab_classe[0]['id_classe']; $classe=$tab_classe[0]['classe']; } //echo "
\n"; echo "\n"; // Boucler sur les classes if(isset($ele_chgt_classe)) { echo "

Archivage des élèves ayant changé de classe en cours d'année : "; echo "\n"; // Ce témoin rendra inopérantes les valeurs des champs tab_id_classe[] et tous_les_eleves } else { echo "

Archiver la classe de $classe : "; } echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; // Pour ne pas avoir à poster la liste des élèves: (sauf pour la dernière étape avec les élèves qui ont changé de classe) echo "\n"; // Pour ne pas avoir à faire la liste des périodes à ce stade: echo "\n"; echo "\n"; echo "
\n"; echo "\n"; echo "
\n"; echo "\n"; echo "

\n"; echo "
\n"; if($archivage_fichiers_bull_pdf_auto=='y') { echo "\n"; } } echo "
\n"; require("../lib/footer.inc.php"); ?>